core: Add _ostree_get_default_sysroot_path()
authorMatthew Barnes <mbarnes@redhat.com>
Tue, 14 Jul 2015 15:58:00 +0000 (11:58 -0400)
committerMatthew Barnes <mbarnes@redhat.com>
Thu, 16 Jul 2015 16:48:11 +0000 (12:48 -0400)
Returns a GFile for the default system root, which is usually the root
directory unless overridden by the OSTREE_SYSROOT environment variable
(which is mainly intended for testing).

src/libostree/ostree-core-private.h
src/libostree/ostree-core.c

index c3c21b20170de641ba9266764a55a5c34b174181..a92aa4c7245332d8cbda5850360691cc7faf74fa 100644 (file)
@@ -143,4 +143,7 @@ GVariant *
 _ostree_detached_metadata_append_gpg_sig (GVariant   *existing_metadata,
                                           GBytes     *signature_bytes);
 
+GFile *
+_ostree_get_default_sysroot_path (void);
+
 G_END_DECLS
index 88dcf6458c73a71746d4596f66977261bafc4684..a3d13e56cdb02a57ee15821c1c1ae4fbfab090ec 100644 (file)
@@ -1967,3 +1967,30 @@ _ostree_detached_metadata_append_gpg_sig (GVariant   *existing_metadata,
 
   return g_variant_dict_end (&metadata_dict);
 }
+
+/**
+ * _ostree_get_default_sysroot_path:
+ *
+ * Returns a #GFile for the default system root, which is usually the root
+ * directory ("/") unless overridden by the %OSTREE_SYSROOT environment
+ * variable.
+ *
+ * Returns: a #GFile for the default system root
+ */
+GFile *
+_ostree_get_default_sysroot_path (void)
+{
+  static gsize default_sysroot_path_initialized;
+  static GFile *default_sysroot_path;
+
+  if (g_once_init_enter (&default_sysroot_path_initialized))
+    {
+      const char *path = g_getenv ("OSTREE_SYSROOT");
+      if (path == NULL || *path == '\0')
+        path = "/";
+      default_sysroot_path = g_file_new_for_path (path);
+      g_once_init_leave (&default_sysroot_path_initialized, 1);
+    }
+
+  return default_sysroot_path;
+}